Diferencias y uniones

Openscad permite hacer operaciones entre figuras. Por ejemplo, con difference() podemos restar de una pieza otra o varias. Por ejemplo, si tenemos las siguientes figuras:

color([0,0,1])cube([10,10,10],center=true);
color([0,1,0])cube([20,20,20]);

Con la instrucción difference podemos restar de la azul la verde:

difference(){
color([0,0,1])cube([10,10,10],center=true);
color([0,1,0])cube([20,20,20]);
}

El resultado es:

Si queremos restar de la verde la azul, hay que poner primero la figura verde en el código y después la azul:

difference(){
color([0,1,0])cube([20,20,20]);
color([0,0,1])cube([10,10,10],center=true);
}

El resultado es:

Si dentro de las llaves de diference hay más de dos piezas, de la primera, se trestan todas las desmás. Por ejemplo con este código:

color([0,1,0])cube([20,20,20]);
color([0,0,1])cube([10,10,10],center=true);
color([0,0,1])translate([20,0,0])cube([10,10,10],center=true);
color([0,0,1])translate([20,20,0])cube([10,10,10],center=true);
color([0,0,1])translate([0,20,0])cube([10,10,10],center=true);

Que corresponde a la siguiente figura

Si aplicamos difference():

difference(){
color([0,1,0])cube([20,20,20]);
color([0,0,1])cube([10,10,10],center=true);
color([0,0,1])translate([20,0,0])cube([10,10,10],center=true);
color([0,0,1])translate([20,20,0])cube([10,10,10],center=true);
color([0,0,1])translate([0,20,0])cube([10,10,10],center=true);
}

El resultado es:

Si quisiéramos restar de las figuras azules la verde, primero deberíamos unir todas las figuras azules en una sola con union():

difference(){
union(){
	color([0,0,1])cube([10,10,10],center=true);
	color([0,0,1])translate([20,0,0])cube([10,10,10],center=true);
	color([0,0,1])translate([20,20,0])cube([10,10,10],center=true);
	color([0,0,1])translate([0,20,0])cube([10,10,10],center=true);
	}
color([0,1,0])cube([20,20,20]);
}

El resultado es:

Ejercicios

Entre dos puntos negros hay 10mm